
#include <vector>
#include <soko/ByteArray.h>
#include "ByteArrayRep.h"

ByteArray::ByteArray(int capacity) {
	mRep = new ByteArrayRep(capacity);
}

ByteArray::ByteArray(const unsigned char * bytes, int length) {
	mRep = new ByteArrayRep(bytes, length);
}

ByteArray::ByteArray(const ByteArray & byteArray) {
	mRep = byteArray.mRep->retain();
}

int ByteArray::capacity() const {
	return mRep->capacity();
}

int ByteArray::length() const {
	return mRep->length();
}

const unsigned char * ByteArray::bytes() const {
	return mRep->bytes();
}

unsigned char & ByteArray::operator[](int index) {
	return mRep->operator[](index);
}

void ByteArray::copyTo(int offset, unsigned char * buffer, int length) {
	mRep->copyTo(offset, buffer, length);
}

void ByteArray::append(unsigned char aByte) {
	mRep->append(aByte);
}

void ByteArray::append(const unsigned char * bytes, int length) {
	mRep->append(bytes, length);
}

void ByteArray::append(const ByteArray & byteArray) {
	mRep->append(byteArray.mRep->bytes(), byteArray.mRep->length());
}

